﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASPPanificadora.classes;
using ASPPanificadora.controller;
using ASPPanificadora.Funcoes;

namespace ASPPanificadora.Telas
{
    public partial class FornecedorView : System.Web.UI.Page
    {
        TipoFornecedorController tipoFornecedorController = new TipoFornecedorController();
        FornecedorController fornecedorController = new FornecedorController();
        CidadeController cidadeController = new CidadeController();
        Fornecedor fornecedor = new Fornecedor();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["TipoUsuario"] == null || !ControleAcessoTela.ConfirmaAcessoTela("FornecedorView", Session["TipoUsuario"]))
                Response.Redirect("~/Default.aspx");


            ((SiteCadastro)Page.Master).btnSalvar.Click += new EventHandler(Salvar);
            ((SiteCadastro)Page.Master).btnPesquisa.Click += new EventHandler(Pesquisar);
            ((SiteCadastro)Page.Master).btnLimpar.Click += new EventHandler(LimparCampos);

            if (!IsPostBack)
            {
                IList<TipoFornecedor> tipoFornecedor = tipoFornecedorController.Recuperar();
                IList<Pais> pais = cidadeController.RetornaPais();

                ddlTipoFornecedor.Items.Add(new ListItem("Selecione", "0"));

                foreach (TipoFornecedor tiposFornecedor in tipoFornecedor)
                {
                    ddlTipoFornecedor.Items.Add(new ListItem(tiposFornecedor.NomeTipoFornecedor, tiposFornecedor.Id.ToString()));
                }

                ddlPais.Items.Add(new ListItem("Selecione", "0"));

                foreach (Pais paises in pais)
                {
                    ddlPais.Items.Add(new ListItem(paises.NomePais, paises.Id.ToString()));
                }

                ddlEstado.Items.Add(new ListItem("Selecione País", "0"));
                ddlCidade.Items.Add(new ListItem("Selecione Estado", "0"));
            }
        }
        
        protected void ExibeMensagem(string msg)
        {
            ((SiteCadastro)Page.Master).txtResultado.Text = msg;
        }

        protected void Salvar(object sender, EventArgs e)
        {
            string msg = "";
            try
            {
                fornecedor = new Fornecedor();
                fornecedor.Id = Convert.ToInt32(txtCodigo.Text);
                fornecedor.NomeFornecedor = txtNomeFornecedor.Text;
                fornecedor.RazaoSocial = txtRazaoSocial.Text;
                fornecedor.Cnpj = txtCnpj.Text;
                fornecedor.Rua = txtRua.Text;
                fornecedor.Numero = Convert.ToInt32(txtNumero.Text);
                fornecedor.Cep = txtCep.Text;
                fornecedor.Bairro = txtBairro.Text;
                fornecedor.TelefoneComercial = txtTelefoneComercial.Text;
                fornecedor.TelefoneCelular = txtTelefoneCelular.Text;
                fornecedor.Email = txtEmail.Text;
                fornecedor.Site = txtSite.Text;
                fornecedor.Ativo = ckbAtivo.Checked;
                fornecedor.IdCidade = Convert.ToInt32(ddlCidade.SelectedValue.FirstOrDefault());
                fornecedor.IdTipoFornecedor = Convert.ToInt32(ddlTipoFornecedor.SelectedValue.ToString());
                
                msg = fornecedorController.Salvar(fornecedor);
                txtCodigo.Text = fornecedor.Id.ToString();
            }
            catch (Exception ex)
            {
                msg = "Erro: " + ex.Message.ToString();
            }
            finally
            {
                ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text = null;
                ExibeMensagem(msg);
            }
        }

        protected void LimparCampos(object sender, EventArgs e)
        {
            ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text = null;
            ((SiteCadastro)Page.Master).txtResultado.Text = null;
            txtCodigo.Text = "0";
            txtNomeFornecedor.Text = null;
            txtRazaoSocial.Text = null;
            txtRua.Text = null;
            txtBairro.Text = null;
            txtEmail.Text = null;
            txtSite.Text = null;
            txtCnpj.Text = null;
            txtNumero.Text = null;
            txtCep.Text = null;
            txtTelefoneComercial.Text = null;
            txtTelefoneCelular.Text = null;
            ddlTipoFornecedor.SelectedIndex = 0;
            ddlPais.SelectedIndex = 0;
            ddlEstado.Items.Clear();
            ddlCidade.Items.Clear();
            ddlEstado.Items.Add(new ListItem("Selecione País", "0"));
            ddlCidade.Items.Add(new ListItem("Selecione Estado", "0"));
        }

        protected void Pesquisar(object sender, EventArgs e)
        {

            if (ValidaCamposPesquisa())
                LimparCampos(sender, e);
            else
            {
                try
                {
                    int id = Convert.ToInt32(((SiteCadastro)Page.Master).txtPesquisaCodigo.Text);
                    fornecedor = new Fornecedor();
                    fornecedor = fornecedorController.PesquisarPorId(id);
                    if (fornecedor == null)
                        LimparCampos(sender, e);
                    else
                    {
                        RedefinirCampos();
                    }
                }
                catch (Exception ex)
                {
                    LimparCampos(sender, e);
                    ExibeMensagem(ex.ToString());
                }
            }
        }

        private bool ValidaCamposPesquisa()
        {
            if (((SiteCadastro)Page.Master).txtPesquisaCodigo == null || ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text.Equals("") || ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text.Equals("0"))
                return true;
            else
                return false;
        }

        protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlCidade.Items.Clear();
            ddlCidade.Items.Add(new ListItem("Selecione Estado", "0"));
            ddlEstado.Items.Clear();
            if (!ddlPais.SelectedValue.Equals(0))
            {
                IList<Estado> estados = cidadeController.RetornaEstadoPorPais(Int32.Parse(ddlPais.SelectedValue));
                ddlEstado.Items.Add(new ListItem("Selecione", "0"));

                foreach (Estado estadosTemp in estados)
                {
                    ddlEstado.Items.Add(new ListItem(estadosTemp.NomeEstado, estadosTemp.Id.ToString()));
                }
            }
        }

        protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlCidade.Items.Clear();
            if (!ddlEstado.SelectedValue.Equals(0))
            {
                IList<Cidade> cidades = cidadeController.RetornaCidadePorEstado(Int32.Parse(ddlEstado.SelectedValue));
                ddlCidade.Items.Add(new ListItem("Selecione", "0"));

                foreach (Cidade cidadesTemp in cidades)
                {
                    ddlCidade.Items.Add(new ListItem(cidadesTemp.NomeCidade, cidadesTemp.Id.ToString()));
                }
            }
        }
        
        private void RedefinirCampos()
        {
            ((SiteCadastro)Page.Master).txtPesquisaCodigo.Text = null;
            ((SiteCadastro)Page.Master).txtResultado.Text = null;
            txtCodigo.Text = fornecedor.Id.ToString();
            txtNomeFornecedor.Text = fornecedor.NomeFornecedor.ToString();
            txtRazaoSocial.Text = fornecedor.RazaoSocial.ToString();
            txtRua.Text = fornecedor.Rua.ToString();
            txtBairro.Text = fornecedor.Bairro.ToString();
            txtEmail.Text = fornecedor.Email.ToString();
            txtSite.Text = fornecedor.Site.ToString();
            txtCnpj.Text = fornecedor.Cnpj.ToString();
            txtNumero.Text = fornecedor.Numero.ToString();
            txtCep.Text = fornecedor.Cep.ToString();
            txtTelefoneComercial.Text = fornecedor.TelefoneComercial.ToString();
            txtTelefoneCelular.Text = fornecedor.TelefoneCelular.ToString();
            ddlTipoFornecedor.SelectedValue = fornecedor.IdTipoFornecedor.ToString();
            ddlEstado.Items.Clear();
            ddlCidade.Items.Clear();
            ddlEstado.Items.Add(new ListItem("Selecione", "0"));
            ddlCidade.Items.Add(new ListItem("Selecione", "0"));
            ddlEstado.Items.Add(new ListItem(fornecedor.Cidade.Estado.NomeEstado, fornecedor.Cidade.Estado.Id.ToString()));
            ddlCidade.Items.Add(new ListItem(fornecedor.Cidade.NomeCidade, fornecedor.Cidade.Id.ToString()));
            ddlPais.SelectedValue = fornecedor.Cidade.Estado.IdPais.ToString();
            ddlEstado.SelectedValue = fornecedor.Cidade.IdEstado.ToString();
            ddlCidade.SelectedValue = fornecedor.IdCidade.ToString();
        }
    }
}